package com.tbit.uqbike.service.business.operationsanalysis;

import com.tbit.manager.api.dto.OrderStatReturnDTO;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 订单分析Service接口
 *
 * @author <a href="mailto:chen.wutian@tbit.com.cn">BUGTian</a>
 * @since 2025/2/27
 */
public interface OrderOAService {

    /**
     * @description: 获取车辆订单的统计数据（订单收益、订单量、车均收益等）
     * @author: mo.shanyong
     * @date: 2025/3/7 13:39
     * @param: accountId 区域Id
     * @param: startDate 筛选开始时间
     * @param: endDate 筛选结束时间
     * @return: java.util.Map<java.lang.String, java.lang.Object>
     */
    Map<String,Object> getOrderBaseData(Integer accountId, Date startDate, Date endDate);

    /**
     * @description: 获取订单收益折线图数据
     * @author: mo.shanyong
     * @date: 2025/3/7 13:43
     * @param: accountId 区域id
     * @param: startDate 开始时间
     * @param: endDate 结束时间
     * @return: java.util.List<com.tbit.manager.api.dto.OrderStatReturnDTO>
     */
    List<OrderStatReturnDTO> getOrderFeeLineData(Integer accountId, Date startDate, Date endDate);

    /**
     * @description: 订单量折线图数据
     * @author: mo.shanyong
     * @date: 2025/3/7 13:51
     * @param: accountId 区域id
     * @param: startDate 开始时间
     * @param: endDate 结束时间
     * @return: java.util.List<com.tbit.manager.api.dto.OrderStatReturnDTO>
     */
    List<OrderStatReturnDTO> getOrderNumLineData(Integer accountId,Date startDate,Date endDate);

    /**
     * @description: 车均收益折线图数据
     * @author: mo.shanyong
     * @date: 2025/3/7 13:51
     * @param: accountId 区域id
     * @param: startDate 开始时间
     * @param: endDate 结束时间
     * @return: java.util.List<com.tbit.manager.api.dto.OrderStatReturnDTO>
     */
    List<OrderStatReturnDTO> getMachineAvgFeeLineData(Integer accountId,Date startDate,Date endDate);

    /**
     * @description: 车均单量折线图数据
     * @author: mo.shanyong
     * @date: 2025/3/7 14:56
     * @param: accountId 区域id
     * @param: startDate 开始时间
     * @param: endDate 结束时间
     * @return: java.util.List<com.tbit.manager.api.dto.OrderStatReturnDTO>
     */
    List<OrderStatReturnDTO> getMachineAvgOrderLineData(Integer accountId,Date startDate,Date endDate);

    /**
     * @description: 正常、站外、超区订单折线图数据
     * @author: mo.shanyong
     * @date: 2025/3/7 15:03
     * @param: accountId 区域id
     * @param: startDate 开始时间
     * @param: endDate 结束时间
     * @return: com.tbit.manager.api.dto.OrderStatReturnDTO
     */
    List<OrderStatReturnDTO> getOrderFinishTypeData(Integer accountId,Date startDate,Date endDate);


    /**
     * @description: 车辆平均里程饼图数据
     * @author: mo.shanyong
     * @date: 2025/3/7 15:06
     * @param: accountId 区域id
     * @param: startDate 开始时间
     * @param: endDate 结束时间
     * @return: java.util.List<com.tbit.manager.api.dto.OrderStatReturnDTO>
     */
    List<OrderStatReturnDTO> getOrderMileagePieData(Integer accountId, Date startDate, Date endDate);


    /**
     * @description: 获取订单支付方式饼图数据
     * @author: mo.shanyong
     * @date: 2025/3/7 15:11
     * @param: accountId 区域id
     * @param: startDate 开始时间
     * @param: endDate 结束时间
     * @return: com.tbit.manager.api.dto.OrderStatReturnDTO
     */
    List<OrderStatReturnDTO> getOrderPayTypePieData(Integer accountId,Date startDate,Date endDate);

    /**
     * @description: 获取时间段内区域的订单的骑行时长的分布数据
     * @author: mo.shanyong
     * @date: 2025/3/14 9:11
     * @param: accountId 区域id
     * @param: startDate 开始时间 2025-03-01 00:00:00
     * @param: endDate 结束时间 2025-03-01 23:59:59
     * @return: java.util.List<com.tbit.manager.api.dto.OrderStatReturnDTO>
     */
    List<OrderStatReturnDTO> getOrderTimeDistribution(Integer accountId, Date startDate,Date endDate);
}
